package com.ruicar.afs.cloud.bizcommon.business.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.ruicar.afs.cloud.bizcommon.business.bean.AfsRepaymentInfo;
import com.ruicar.afs.cloud.bizcommon.business.entity.FinCostDetails;
import com.ruicar.afs.cloud.bizcommon.business.entity.FinDiscountDetails;
import com.ruicar.afs.cloud.bizcommon.business.entity.FinFinancingItems;
import com.ruicar.afs.cloud.bizcommon.business.entity.FinRentAdjustDetails;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * @description: 计算器
 * @author: sijun.yu
 * @date: 2020/7/10 14:54
 */
@Data
public class CalculatorDTO extends FinCostDetails {

    /**
     * 每页大小
     */
    private int pageSize;

    /**
     * 当前页数
     */
    private int pageNo;

    /**
     * 第一期租金
     */
    private BigDecimal firstRent;

    /**
     * 最大租金
     */
    private BigDecimal maxRent;

    /**
     * 还款计划表
     */
    private List<AfsRepaymentInfo> repaymentList;

    /**
     * 是否包含月供，1-不包含，2-不包含
     */
    private String ballonLoanType;

    /**
     * 期数
     */
    private String peroids;

    /**
     * 金额
     */
    private String money;

    /**
     * 段数
     */
    private Integer step;

    /**
     * 比例
     */
    private BigDecimal stepPercent;

    /**
     * 等额累进-金额
     */
    private BigDecimal quota;

    /**
     * 租金列表
     */
    private List<FinRentAdjustDetails> rentList;

    /**
     * 结构化期数
     */
    Integer structuredMonth;

    /**
     * 结构化类型 0 前N期不还款  1前N期只还利息 2 前N期还部分
     */
    String structuredType;

    /**
     * 前N期每月月供
     */
    BigDecimal structuredMoney;

    /**
     * 费用ID
     */
    @JSONField(serializeUsing = com.alibaba.fastjson.serializer.ToStringSerializer.class)
    private Long costId;

    /**
     * 子产品id
     */
    @JSONField(serializeUsing = com.alibaba.fastjson.serializer.ToStringSerializer.class)
    private Long addId;

    /**
     * 融资项目
     */
    private List<FinFinancingItems> itemsList;

    /**
     * 贴息项目
     */
    private List<FinDiscountDetails> discountList;

    /**
     * 激活日期
     */
    private String activeDate;

    /**
     * 逾期基数
     */
    private String overdueBase;

    /**
     * 调整基点
     */
    private Integer addPointValue;

    /**
     * 调整后月供最小值限定方式 0-比例，1-金额
     */
    private String adjustedMinimumMode;

    /**
     * 调整后月供≥总融资额*（%）
     */
    private BigDecimal monthlyPaymentPercentage;

    /**
     * 调整后月供
     */
    private BigDecimal adjustedMonthlyPayments;

    /**
     * 前n期还款最小值限定方式 0-比例，1-金额
     */
    private String firstNMinimumLimit;

    /**
     * 前N期还款总额≥总融资额*（%）
     */
    private BigDecimal percentageTotalRepayment;

    /**
     * 前N期还款总额
     */
    private BigDecimal totalAmountInstalments;

    /**
     * 任意贷期数设定(n)
     */
    private Integer setAnyNumberCredits;

    /**
     * 业务标识
     */
    private String businessFlag;

}
